package fr.thelem.gestiondemandesthelem.service.impl;

import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.transaction.annotation.Transactional;

import fr.thelem.gestiondemandesthelem.dao.IAppliDao;
import fr.thelem.gestiondemandesthelem.dao.model.AdministrateurEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreDemandeValeursEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDParametreEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CDPointDeControleEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPParametreDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPParametreEtapeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CPPointDeControleEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CategorieEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CommentairesEntity;
import fr.thelem.gestiondemandesthelem.dao.model.CorrespondanceParametresEntity;
import fr.thelem.gestiondemandesthelem.dao.model.EtatEntity;
import fr.thelem.gestiondemandesthelem.dao.model.MessageEntity;
import fr.thelem.gestiondemandesthelem.dao.model.PersonneEntity;
import fr.thelem.gestiondemandesthelem.dao.model.SousCategorieEntity;
import fr.thelem.gestiondemandesthelem.dao.model.TypeDemandeEntity;
import fr.thelem.gestiondemandesthelem.dao.model.UtilisateurEntity;
import fr.thelem.gestiondemandesthelem.service.IAppliService;

/**
 * Implémentation du service d'accès aux données de l'outil d'aide à l'approche globale.
 */
@Transactional
public class AppliService implements IAppliService {

    private static final Log LOGGER = LogFactory.getLog(AppliService.class);

    private IAppliDao appliDao;

    /**
     * Accesseur de appliDao
     * 
     * @return le appliDao
     */
    public IAppliDao getAppliDao() {
        return appliDao;
    }

    /**
     * Affectation de appliDao
     * 
     * @param appliDao appliDao à affecter
     */
    public void setAppliDao(IAppliDao appliDao) {
        this.appliDao = appliDao;
    }

    public Collection<String> recupererAllCPDemande() {
        return appliDao.recupererAllCPDemande();
    }

    public CDParametreEtapeEntity recupererParametreCorrespondantDemande(int CDParametreDemande) {
        return appliDao.recupererParametreCorrespondantDemande(CDParametreDemande);
    }

    public CDParametreDemandeEntity recupererParametreCorrespondantEtape(int CDParametreEtape) {
        return appliDao.recupererParametreCorrespondantEtape(CDParametreEtape);
    }

    public PersonneEntity recupererPersonne(String loginLDAP) {
        return appliDao.recupererPersonne(loginLDAP);
    }

    public AdministrateurEntity recupererAdministrateur(String loginLDAP) {
        return appliDao.recupererAdministrateur(loginLDAP);
    }

    public UtilisateurEntity recupererUtilisateur(String loginLDAP) {
        return appliDao.recupererUtilisateur(loginLDAP);
    }

    public void enleverAdmin(String loginLDAP) {
        appliDao.enleverAdmin(loginLDAP);
    }

    public void enleverUtilisateur(String loginLDAP) {
        appliDao.enleverUtilisateur(loginLDAP);
    }

    public void majAdministrateur(String loginLDAP, Date dateMiseAJourPersonne) {
        appliDao.majAdministrateur(loginLDAP, dateMiseAJourPersonne);
    }

    public void majUtilisateur(String loginLDAP, Date dateMiseAJourPersonne) {
        appliDao.majUtilisateur(loginLDAP, dateMiseAJourPersonne);
    }

    public Collection<AdministrateurEntity> recupererAdministrateurs() {
        return appliDao.recupererAdministrateurs();
    }

    public Collection<UtilisateurEntity> recupererUtilisateurs() {
        return appliDao.recupererUtilisateurs();
    }

    public void ajouterAdministrateur(String loginLDAP, Date dateCreationPersonne, Date dateMiseAJourPersonne) {
        appliDao.ajouterAdministrateur(loginLDAP, dateCreationPersonne, dateMiseAJourPersonne);
    }

    public void ajouterUtilisateur(String loginLDAP, Date dateCreationPersonne, Date dateMiseAJourPersonne) {
        appliDao.ajouterUtilisateur(loginLDAP, dateCreationPersonne, dateMiseAJourPersonne);
    }

    public boolean isAdministrateurExiste(String loginLDAP) {
        return appliDao.isAdministrateurExiste(loginLDAP);
    }

    public boolean isUtilisateurExiste(String loginLDAP) {
        return appliDao.isUtilisateurExiste(loginLDAP);
    }

    @Override
    public boolean isTitreExiste(String titre) {
        return appliDao.isTitreExiste(titre);
    }

    @Override
    public boolean recupererObligatoire(int idParam, int idDemande) {
        return appliDao.recupererObligatoire(idParam, idDemande);
    }

    @Override
    public void ajouterCPDemande(int idCDDemande, String titreDemande, String referenceDemande, Map<String, String> paramsDemande,
            Map<String, String> paramsMulti, String commentaire, PersonneEntity personne) {
        appliDao.ajouterCPDemande(idCDDemande, titreDemande, referenceDemande, paramsDemande, paramsMulti, commentaire, personne);
    }

    @Override
    public Collection<CDParametreDemandeEntity> recupererCDParametreDemande(int idCDDemande) {
        return appliDao.recupererCDParametreDemandes(idCDDemande);
    }

    @Override
    public Collection<CPParametreDemandeEntity> recupererCPParametreDemande(int idCDParametreDemande) {
        return appliDao.recupererCPParametreDemandes(idCDParametreDemande);
    }

    @Override
    public Collection<CDParametreDemandeValeursEntity> recupererCDParametreDemandeValeurs(int idCDParametreDemande) {
        return appliDao.recupererCDParametreDemandesValeurs(idCDParametreDemande);
    }

    @Override
    public Collection<CDPointDeControleEntity> recupererCDPointDeControle(int idCDDemande) {
        return appliDao.recupererCDPointDeControles(idCDDemande);
    }

    @Override
    public Collection<CPPointDeControleEntity> recupererCPPointDeControles(int idCDPointDeControle) {
        return appliDao.recupererCPPointDeControles(idCDPointDeControle);
    }

    @Override
    public String recupererTypeSaisieCDParametreDemande(int idCDParametreDemande) {
        return appliDao.recupererCDParametreDemande(idCDParametreDemande).getTypeSaisieParametreDemande();
    }

    @Override
    public void ajouterMessage(String msg, AdministrateurEntity Administrateur, Date date) {
        appliDao.ajouterMessage(msg, Administrateur, date);
    }

    @Override
    public Collection<MessageEntity> recupererMessages() {
        return appliDao.recupererMessages();
    }

    @Override
    public MessageEntity recupererDernierMessage() {
        return appliDao.recupererDernierMessage();
    }

    @Override
    public void supprimerMessage(int identifiantMessage) {
        appliDao.supprimerMessage(identifiantMessage);
    }

    /** Type de demande **/

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterTypeDemande(String typeDemande) {
        return appliDao.ajouterTypeDemande(typeDemande);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<TypeDemandeEntity> recupererTypesDemande() {
        return appliDao.recupererTypesDemande();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<String> recupererTypesDemandeNom() {
        return appliDao.recupererTypesDemandeNom();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void modifierDescriptionEtape(int idEtape, String descriptionEtape) {
        appliDao.modifierDescriptionEtape(idEtape, descriptionEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerTypeDemande(int idTypeDemande) {
        appliDao.supprimerTypeDemande(idTypeDemande);

    }

    /** Catégorie **/

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCategorie(int idTypeDemande, String categorie) {
        return appliDao.ajouterCategorie(idTypeDemande, categorie);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CategorieEntity> recupererCategories(int idTypeDemande) {
        return appliDao.recupererCategories(idTypeDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCategorie(int idCategorie) {
        appliDao.supprimerCategorie(idCategorie);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterSousCategorie(int idCategorie, String sousCategorie) {
        return appliDao.ajouterSousCategorie(idCategorie, sousCategorie);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<SousCategorieEntity> recupererSousCategories(int idCategorie) {
        return appliDao.recupererSousCategories(idCategorie);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerSousCategorie(int idSousCategorie) {
        appliDao.supprimerSousCategorie(idSousCategorie);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDDemande(int idTypeDemande, int idSousCategorie, String CDDemande) {
        return appliDao.ajouterCDDemande(idTypeDemande, idSousCategorie, CDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDDemandeEntity> recupererCDDemandes(int idSousCategorie) {
        return appliDao.recupererCDDemandes(idSousCategorie);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public CDDemandeEntity recupererCDDemande(int idCDDemande) {
        return appliDao.recupererCDDemande(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDDemande(int idCDDemande) {
        appliDao.supprimerCDDemande(idCDDemande);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDEtape(int idCDDemande, String CDEtape, String descriptionCDEtape) {
        return appliDao.ajouterCDEtape(idCDDemande, CDEtape, descriptionCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String ajouterSelectionCDEtape(int idCDDemande, int idCDEtape) {
        return appliDao.ajouterSelectionCDEtape(idCDDemande, idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDEtapeEntity> recupererCDEtapes(int idCDDemande) {
        return appliDao.recupererCDEtapes(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDEtapeEntity> recupererToutesCDEtapes(int idCDDemande) {
        return appliDao.recupererToutesCDEtapes(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String recupererDescriptionCDEtape(int idCDEtape) {
        return appliDao.recupererDescriptionCDEtape(idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDEtape(int idCDEtape, int idCDDemande) {
        appliDao.supprimerCDEtape(idCDEtape, idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerDefinitivementCDEtape(int idCDEtape) {
        appliDao.supprimerDefinitivementCDEtape(idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDPointControle(int idCDDemande, String CDPointControle, String typeSaisieCDPointControle) {
        return appliDao.ajouterCDPointControle(idCDDemande, CDPointControle, typeSaisieCDPointControle);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String ajouterSelectionCDPointControle(int idCDDemande, int idCDPointControle) {
        return appliDao.ajouterSelectionCDPointControle(idCDDemande, idCDPointControle);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public LinkedList<CDPointDeControleEntity> recupererCDPointsControle(int idCDDemande) {
        return appliDao.recupererCDPointsControle(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDPointDeControleEntity> recupererTousCDPointsControle(int idCDDemande) {
        return appliDao.recupererTousCDPointsControle(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int recupererNumeroCDPointControle(int idCDPointControle, int idCDDemande) {
        return appliDao.recupererNumeroCDPointControle(idCDPointControle, idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void modifierNumeroCDPointControle(int idCDPointControle, int idCDDemande, int numeroCDPointControle) {
        appliDao.modifierNumeroCDPointControle(idCDPointControle, idCDDemande, numeroCDPointControle);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean testerNumeroCDPointControle(int idCDDemande, int numeroCDPointControle) {
        return appliDao.testerNumeroCDPointControle(idCDDemande, numeroCDPointControle);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDPointControle(int idCDPointControle, int idCDDemande) {
        appliDao.supprimerCDPointControle(idCDPointControle, idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerDefinitivementCDPointControle(int idCDPointControle) {
        appliDao.supprimerDefinitivementCDPointControle(idCDPointControle);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDParametreDemande(int idCDDemande, String CDParametreDemande, boolean obligation, String typeSaisieCDParametreDemande,
            String descriptionCDParametreDemande, String valeursCDParametreDemande) {
        return appliDao.ajouterCDParametreDemande(idCDDemande, CDParametreDemande, obligation, typeSaisieCDParametreDemande, descriptionCDParametreDemande,
                valeursCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String ajouterSelectionCDParametreDemande(int idCDDemande, int idCDParametreDemande, boolean obligation, String descriptionCDParametreDemande) {
        return appliDao.ajouterSelectionCDParametreDemande(idCDDemande, idCDParametreDemande, obligation, descriptionCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreDemandeEntity> recupererCDParametresDemande(int idCDDemande) {
        return appliDao.recupererCDParametresDemande(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreDemandeEntity> recupererTousCDParametresDemande(int idCDDemande) {
        return appliDao.recupererTousCDParametresDemande(idCDDemande);
    }

    @Override
    public String recupererDescriptionCDParametreDemande(int idCDDemande, int idCDParametreDemande) {
        return appliDao.recupererDescriptionCDParametreDemande(idCDDemande, idCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String recupererTypeSaisieCDParametreMaDemande(int idCDParametreDemande) {
        return appliDao.recupererTypeSaisieCDParametreDemande(idCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void modifierDescriptionCDParametreDemande(int idCDDemande, int idCDParametreDemande, String descriptionCDParametreDemande) {
        appliDao.modifierDescriptionCDParametreDemande(idCDDemande, idCDParametreDemande, descriptionCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDParametreDemande(int idCDParametreDemande, int idCDDemande) {
        appliDao.supprimerCDParametreDemande(idCDParametreDemande, idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerDefinitivementCDParametreDemande(int idCDParametreDemande) {
        appliDao.supprimerDefinitivementCDParametreDemande(idCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDParametreDemandeValeurs(int idCDParametreDemande, String CDParametreDemandeValeurs) {
        return appliDao.ajouterCDParametreDemandeValeurs(idCDParametreDemande, CDParametreDemandeValeurs);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreDemandeValeursEntity> recupererCDParametresDemandeValeurs(int idCDParametreDemande) {
        return appliDao.recupererCDParametresDemandeValeurs(idCDParametreDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDParametreDemandeValeurs(int idCDParametreDemandeValeurs) {
        appliDao.supprimerCDParametreDemandeValeurs(idCDParametreDemandeValeurs);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCDParametreEtape(int idCDEtape, String CDParametreEtape, String typeSaisieCDParametreEtape, String descriptionCDParametreEtape,
            String valeurFixeCDParametreEtape) {
        return appliDao.ajouterCDParametreEtape(idCDEtape, CDParametreEtape, typeSaisieCDParametreEtape, descriptionCDParametreEtape,
                valeurFixeCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String ajouterSelectionCDParametreEtape(int idCDEtape, int idCDParametreEtape, String valeurFixeCDParametreEtape) {
        return appliDao.ajouterSelectionCDParametreEtape(idCDEtape, idCDParametreEtape, valeurFixeCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String testerTypeSaisieCDParametreEtape(int idCDParametreEtape) {
        return appliDao.testerTypeSaisieCDParametreEtape(idCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreEtapeEntity> recupererCDParametresEtape(int idCDEtape) {
        return appliDao.recupererCDParametresEtape(idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String recupererValeurCDParametreEtape(int idCDEtape, int idCDParametreEtape) {
        return appliDao.recupererValeurCDParametreEtape(idCDEtape, idCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public CDParametreEtapeEntity recupererCDParametreEtape(int idCDParametreEtape) {
        return appliDao.recupererCDParametreEtape(idCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreEtapeEntity> recupererTousCDParametresEtape(int idCDEtape) {
        return appliDao.recupererTousCDParametresEtape(idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void modifierCDParametreEtape(int idCDEtape, int idCDParametreEtape, String descriptionCDParametreEtape, String valeurFixeCDParametreEtape) {
        appliDao.modifierCDParametreEtape(idCDEtape, idCDParametreEtape, descriptionCDParametreEtape, valeurFixeCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCDParametreEtape(int idCDParametreEtape, int idCDEtape) {
        appliDao.supprimerCDParametreEtape(idCDParametreEtape, idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerDefinitivementCDParametreEtape(int idCDParametreEtape) {
        appliDao.supprimerDefinitivementCDParametreEtape(idCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCPParametreEtape(int idCDParametreEtape, String CPParametreEtape) {
        return appliDao.ajouterCPParametreEtape(idCDParametreEtape, CPParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CPParametreEtapeEntity> recupererCPParametresEtape(int idCDParametreEtape) {
        return appliDao.recupererCPParametresEtape(idCDParametreEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCPParametreEtape(int idCPParametreEtape) {
        appliDao.supprimerCPParametreEtape(idCPParametreEtape);

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int ajouterCorrespondanceParametres(int idCorrespondanceParametresDemande, int idCorrespondanceParametresEtape) {
        return appliDao.ajouterCorrespondanceParametres(idCorrespondanceParametresDemande, idCorrespondanceParametresEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CorrespondanceParametresEntity> recupererCorrespondancesParametres(int idCDDemande, int idCDEtape) {
        return appliDao.recupererCorrespondancesParametres(idCDDemande, idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreEtapeEntity> recupererCorrespondancesParametresEtape(int idCDEtape) {
        return appliDao.recupererCorrespondancesParametresEtape(idCDEtape);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Collection<CDParametreDemandeEntity> recupererCorrespondancesParametresDemande(int idCDDemande) {
        return appliDao.recupererCorrespondancesParametresDemande(idCDDemande);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void supprimerCorrespondanceParametres(int idCorrespondanceParametres) {
        appliDao.supprimerCorrespondanceParametres(idCorrespondanceParametres);
    }

    @Override
    public Collection<String> recupererEtat() {
        return appliDao.recupererEtat();
    }

    @Override
    public Collection<String> recupererType() {
        return appliDao.recupererType();
    }

    @Override
    public Collection<CDDemandeEntity> recupererNomDemandeAdmin() {
        return appliDao.recupererNomDemandeAdmin();
    }

    @Override
    public Collection<CDDemandeEntity> recupererNombreDemandeAdmin() {
        return appliDao.recupererNombreDemandeAdmin();
    }

    @Override
    public Collection<CPDemandeEntity> recupererDemande() {
        return appliDao.recupererDemande();
    }

    @Override
    public Collection<CPDemandeEntity> recupererPersonneEffectueDemande() {
        return appliDao.recupererPersonneEffectueDemande();
    }

    @Override
    public Collection<CategorieEntity> recupererNomCategorie() {
        return appliDao.recupererNomCategorie();
    }

    @Override
    public Collection<CPDemandeEntity> recupererDemandesEnCoursEnAttente() {
        return appliDao.recupererDemandesEnCoursEnAttente();
    }

    @Override
    public Collection<CPDemandeEntity> rechercherDemandesParTypeParEtat(String etat, String type) {
        return appliDao.rechercherDemandesParTypeParEtat(etat, type);
    }

    @Override
    public void modifierEtatDemande(int idCPDemande, String nomEtat) {
        appliDao.modifierEtatDemande(idCPDemande, nomEtat);

    }

    @Override
    public Collection<String> recupererUtilisateursNom() {
        return appliDao.recupererUtilisateursNom();
    }

    public Collection<CPPointDeControleEntity> recupererCPPointControleDemande(int idDemande) {

        return appliDao.recupererCPPointControleDemande(idDemande);
    }

    public void modifierValeurPointControle(int idPointControle, String nouvelleValeur) {
        appliDao.modifierValeurPointControle(idPointControle, nouvelleValeur);
    }

    public CPDemandeEntity recupererCPDemandeParId(int idCPDemande) {
        CPDemandeEntity demande = appliDao.recupererCPDemandeParId(idCPDemande);
        return demande;
    }

    public Collection<CPDemandeEntity> filtrerDemandesParTypeParEtatParPersonneParDate(String etat, String type, String personne, Date date1, Date date2) {
        return appliDao.filtrerDemandesParTypeParEtatParPersonneParDate(etat, type, personne, date1, date2);
    }

    public void supprimerDemande(int idCPDemande) {
        appliDao.supprimerDemande(idCPDemande);

    }

    public List<CPDemandeEntity> rechercherDemandeParNom(String mot) {
        return appliDao.rechercherDemandeParNom(mot);
    }

    @Override
    public CPDemandeEntity recupererCPDemandeById(int idCPDemande) {

        return appliDao.recupererCPDemandeById(idCPDemande);
    }

    @Override
    public CPDemandeEntity recuperCPDemandeWithEtapes(int idCPDemande) {

        return appliDao.recuperCPDemandeWithEtapes(idCPDemande);
    }

    @Override
    public CPEtapeEntity recupererCPEtapeByid(int idCPEtape) {

        return appliDao.recupererCPEtapeByid(idCPEtape);
    }

    @Override
    public void modifierEtatCPEtape(int idCPEtape, String nomEtat) {
        appliDao.modifierEtatCPEtape(idCPEtape, nomEtat);
    }

    @Override
    public EtatEntity recupererEtatByNomEtat(String nomEtat) {

        return appliDao.recupererEtatByNomEtat(nomEtat);
    }

    public void modifierDateDernierEtatDemande(int idCPDemande) {
        appliDao.modifierDateDernierEtatDemande(idCPDemande);
    }

    @Override
    public void ajouterEtat(String nomEtat) {
        appliDao.ajouterEtat(nomEtat);
    }

    @Override
    public PersonneEntity recupererPersonneByLdap(String ldap) {
        return appliDao.recupererPersonneByLdap(ldap);
    }

    @Override
    public void modifierCPDemande(int idLaDemande, String NomDemande, String CodeProjetDemande, String ChargeDemande,
            String ReferenceDemande) {

        appliDao.modifierCPDemande(idLaDemande, NomDemande, CodeProjetDemande, ChargeDemande, ReferenceDemande);
    }
    
    public Collection<CPDemandeEntity> filtrerDemandesParTypeParPersonneParDate3Close(String etat, String type, String personne, Date date1, 
    		Date date2) {
    	
    	return appliDao.filtrerDemandesParTypeParPersonneParDate3Close(etat, type, personne, date1, date2);
    }

	@Override
	public Collection<CPDemandeEntity> recupererDemandeOuvert() {


		return appliDao.recupererDemandeOuvert();
	}

	@Override
	public Collection<CPDemandeEntity> recupererDemandeReOuvert() {

		return appliDao.recupererDemandeReOuvert();
	}

	@Override
	public Collection<CPDemandeEntity> recupererDemandeEnCours() {

		return appliDao.recupererDemandeEnCours();
	}

	@Override
	public Collection<CPDemandeEntity> recupererDemandeEnAttente() {

		return appliDao.recupererDemandeEnAttente();
	}

	@Override
	public Collection<CommentairesEntity> recupererCommentairesDemande(int idDemande) {

		return appliDao.recupererCommentairesDemande(idDemande);
	}

	@Override
	public void ajouterUnCommentaire(String commentaire, PersonneEntity auteur, CPDemandeEntity demandeConcerne) {

		appliDao.ajouterUnCommentaire(commentaire, auteur, demandeConcerne);
		
	}

	@Override
	public void supprimerCommentaire(int idCommentaire) {

		appliDao.supprimerCommentaire(idCommentaire);
	}

	@Override
	public CommentairesEntity recupererCommentairesDemandeByID(int idCommentaire) {

		return appliDao.recupererCommentairesDemandeByID(idCommentaire);
	}

	@Override
	public Collection<CommentairesEntity> recupererCommentaires() {
		
		return appliDao.recupererCommentaires();
	}

	@Override
	public List<PersonneEntity> rechercherPersonne(String ldap) {

		return appliDao.rechercherPersonne(ldap);
	}

	@Override
	public void modifierCPParametreValeur(int idCPDemande, String idCDParametreDemande, String lesParams) {
		
		appliDao.modifierCPParametreValeur(idCPDemande, idCDParametreDemande, lesParams);
		
	}

	@Override
	public Collection<CPPointDeControleEntity> recupererCPPointControleDemande2(int idDemande) {

		return appliDao.recupererCPPointControleDemande2(idDemande);
	}

	@Override
	public void ajouterCPPointControle(CDDemandeEntity CDDemande, CPDemandeEntity CPDemande) {

		appliDao.ajouterCPPointControle(CDDemande, CPDemande);
	}

}
